import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)

/**
 * Una bala.
 */
public class Bala extends Actor
{
    protected Unidad.Color color; /** color de la unidad que disparó la bala */
    protected int maxdist = 200; /** distancia máxima que viaja antes de desaparecer */
    protected int velocidad = 10;
    protected int daño; /** vida que le baja a una unidad */
    
    protected int distancia = 0; /** distancia que ha viajado la bala */
    protected GreenfootSound sonido; /** sonido que hace al explotar */
    
    /**
     * Constructor
     * @param col  color de la unidad que la disparó
     * @param dir  dirección con que sale la bala
     */
    public Bala(Unidad.Color col, int dir ){
        color = col;
        setRotation(dir);
        sonido = new GreenfootSound("bala_tanque.wav");
    }
    
    /**
     * Checa si golpea a un enemigo, o se sigue moviendo.
     */
    public void act() 
    {
        if( distancia >= maxdist ){
            getWorld().removeObject(this);
            return;
        }
        Unidad u = (Unidad)getOneIntersectingObject( Unidad.class );
        if( u != null && u.color != color ) {
            sonido.play();
            u.bajarVida(daño);
            PequeñaExplosion pe = new PequeñaExplosion();
            getWorld().addObject( pe, getX(), getY() );
            getWorld().removeObject(this);
        }
        move( velocidad );
        distancia += velocidad;
    }    
}
